// 内部的一个 Tree 对象
class Tree {
  constructor(list, filterNodeMethod) {
    this.list = list
    this.filterNodeMethod = filterNodeMethod
  }

  filter(value) {
    // 要处理过滤, filter 函数的回调函数我不知道如何写，应该由外部传入，我只管使用即可。
    if (!this.filterNodeMethod) {
      throw new Error('调用 filter 的时候，需要先传递 filterNodeMehotd 函数给我')
    }
    return this.list.filter((item) => {
      return this.filterNodeMethod(value, item)
    })

    // return this.list.filter(this.filterNodeMethod)
  }
}

const t1 = new Tree([{ name: '张三' }, { name: '李四' }, { name: '王五' }], (value, item) => {
  // console.log('item', item)
  return item.name === value
})

// 过滤出张三的
console.log(t1.filter('张三'))

// 过滤出李四的
console.log(t1.filter('李四'))
